"""
696. Count Binary Substrings (Easy)

给定一个字符串 s，计算具有相同数量0和1的非空(连续)子字符串的数量，
并且这些子字符串中的所有0和所有1都是组合在一起的。
重复出现的子串要计算它们出现的次数。

示例 1 :
输入: "00110011"
输出: 6
解释: 有6个子串具有相同数量的连续1和0：“0011”，“01”，“1100”，“10”，“0011” 和 “01”。

请注意，一些重复出现的子串要计算它们出现的次数。
另外，“00110011”不是有效的子串，因为所有的0（和1）没有组合在一起。
"""


class Solution:
    def countBinarySubstrings(self, s: str) -> int:
        n = len(s)
        if n <= 1:
            return 0
        curlen = 1
        prelen = 0
        count = 0
        for i in range(1, n):
            if s[i] == s[i - 1]:
                curlen += 1
            else:
                prelen = curlen
                curlen = 1
            if prelen >= curlen:
                count += 1
        return count


aaa = "001101001100"
obj = Solution().countBinarySubstrings(aaa)
print(obj)
